import config from "../../config";

type positionType = {x : number, y : number};
class position {
  // 收集所有坐标
  collection:positionType[] = []

  // 生成随机坐标
  position() {
    return {
      x: Math.floor(Math.random() * (config.canvas.width / config.model.width)) * config.model.width,
      y: Math.floor(Math.random() * (config.canvas.height / config.model.height))  * config.model.height
    }
  }

  // 批量生成随机坐标
  getCollection(num: number) {
    // 收集所有坐标
    const collection = [] as { x : number; y : number}[]
    for (let i = 0; i < num; i++) {
      // 获取唯一坐标
      while(true) {
        const position = this.position()
        // 判断坐标是否重复
        const exist = this.collection.some(item => {
          return position.x === item.x && position.y === item.y
        })
        // 鸟和两个坦克的位置没有其他建筑物
        let rightPosition = true
        let bottomMiddlePosition = config.canvas.width / 2
        // 鸟附近的高度
        let bottomHeightPosition = config.canvas.height - config.model.height * 3
        if ((Math.abs(bottomMiddlePosition - position.x) < 3 * config.model.width) && (position.y >= bottomHeightPosition)) {
          rightPosition = false
        }
        // 不存在重复坐标 第一行不出现建筑物 坦克出生地附近无建筑物
        if (!exist && position.y !== 0 && rightPosition) {
          collection.push(position)
          this.collection.push(position)
          break
        }
      }
    }
    return collection
  }
}
export default new position()
